В заданной строке нумерация символов начинается
с 1. Подстрокой S[i..j] будем называть совокупность символов,
которые начинаются в позиции і и
заканчиваются в позиции j.
Напишите программу, которая для заданных индексов і и j выведет длину
подстроки, а также все символы этой подстроки не нарушая порядок их следования
в строке.
Вход. Первая строка содержит строку S, длина которой
не превышает 100. Во второй строке записаны два индекса i и j (1 ≤ і ≤
j ≤ size(S), где через
size(S) обозначена длина строки).
Выход. В первой строке выведите длину подстроки, а во второй
запишите все символы подстроки в порядке их следования в строке S.
Пример входа |
Пример выхода |
abracadabra 2 5 |
4 brac |
строки
Прочитаем входную строку в символьный массив, начиная с
первой (не нулевой) позиции. Длина подстроки
S[i..j] равна j – i + 1. Символы подстроки выводим при помощи цикла for.
Входную
строку читаем в переменную типа string. Добавим спереди нее символ пробела чтобы нумерация букв
начиналась с 1. Воспользуемся методом substr для выделения подстроки.
Реализация алгоритма
Объявим
символьный массив для хранения строки.
char s[110];
Читаем
входные данные. Поскольку индексация в строке начинается с 1, будем ее читать в
массив начиная с позиции 1.
gets(s
+ 1);
scanf("%d %d", &i, &j);
Выводим длину подстроки S[i..j],
она равна j – i + 1.
printf("%d\n", j - i + 1);
Выводим символы
подстроки.
for (k = i; k <= j; k++)
printf("%c", s[k]);
printf("\n");
Реализация алгоритма – STL
Читаем входные данные. Ко входной строке s спереди добавим пробел чтобы нумерация входных символов
начиналась с 1.
cin >> s; s = " " + s;
cin >> i >> j;
Выделяем
подстроку длины j – i + 1, которая начинается в позиции i.
res = s.substr(i, j - i + 1);
Выводим
ответ: длину искомой подстроки и саму подстроку.
cout << res.length() << endl;
cout << res << endl;
Java реализация
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new
Scanner(System.in);
String s = con.nextLine();
s = " " + s;
int i = con.nextInt();
int j = con.nextInt();
System.out.println(j - i + 1);
s = s.substring(i,j+1);
System.out.println(s);
con.close();
}
}
Python реализация
s = input()
a, b = map(int,input().split())
print (b-a+1)
print (s[a-1:b])